package org.jeecg.modules.online.cgform.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.online.cgform.components.LinkDown;
import org.jeecg.modules.online.cgform.entity.OnlCgformField;
import org.jeecg.modules.online.cgform.model.TreeModel;

import java.util.List;
import java.util.Map;

/**
 * @Description: Online表单开发
 * @Author: jeecg-boot
 * @Date: 2019-03-12
 * @Version: V1.0
 */
public interface OnlCgformFieldMapper extends BaseMapper<OnlCgformField> {

	/**
	 * 根据传入sql查询集合
	 * @param sql
	 * @return
	 */
	public List<Map<String,Object>> queryListBySql(@Param("sqlStr") String sql);

	/**
	 * 根据传入sql查询总数
	 * @param sql
	 * @return
	 */
	public Integer queryCountBySql(@Param("sqlStr") String sql);

	/**
	 * 删除
	 * @param sql
	 */
	public void deleteAutoList(@Param("sqlStr") String sql);

	/**
	 * 保存
	 */
	public void saveFormData(@Param("sqlStr") String sql);


	/**
	 * 编辑
	 */
	public void editFormData(@Param("sqlStr") String sql);


	/**
	 * 查询
	 * @param sql
	 * @return
	 */
	public Map<String, Object> queryFormData(@Param("sqlStr") String sql);

	/**
	 * 执行SQL语句查询集合
	 * @param sql
	 * @return
	 */
	public List<Map<String, Object>> queryListData(@Param("sqlStr") String sql);

	/**
	 * 分页查询
	 * @param page Page<Map> page = new Page<Map>(pageNo, pageSize);
	 * @param sql 查询的SQL字符串
	 * @return
	 */
	IPage<Map<String,Object>> selectPageBySql(Page<Map<String,Object>> page,@Param("sqlStr") String sql);

	/**
	 * 执行Insert SQL语句
	 */
	public void executeInsertSQL(Map<String,Object> params);

	/**
	 * 执行Updatet SQL语句
	 */
	public void executeUpdatetSQL(Map<String,Object> params);

	/**
	 * 查询需要被隐藏的列
	 * @param userId 用户ID
	 * @param onlineTbname online:tbname%
	 * @return
	 */
	public List<String> selectOnlineHideColumns(@Param("user_id") String userId,@Param("online_tbname") String onlineTbname);

	/**
	 * 查询需要设置成disabled的列
	 */
	public List<String> selectOnlineDisabledColumns(@Param("user_id") String userId,@Param("online_tbname") String onlineTbname);

	/**
	 * 查询流程表单权限
	 * @param tableName 表名 不带online标识的
	 * @param taskId
	 * @param ruleType 策略1显示2禁用
	 * @return
	 */
	public List<String> selectFlowAuthColumns(@Param("table_name") String tableName,@Param("task_id") String taskId,@Param("rule_type") String ruleType);

	/**
	 * 根据lnikDown配置查询数据
	 * @param linkDown
	 * @return
	 */
	@Deprecated
	public List<TreeModel> queryDataListByLinkDown(@Param("query") LinkDown linkDown);
}
